package com.itheima.controller.menu;

import com.itheima.constant.MessageConstant;
import com.itheima.entity.PageResult;
import com.itheima.entity.QueryPageBean;
import com.itheima.entity.Result;
import com.itheima.pojo.Menu;
import com.itheima.service.menu.MenuService;
import org.apache.dubbo.config.annotation.Reference;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * @author 林金洋
 * @since 2021/11/5 15:15
 */
@RestController
@RequestMapping("/menu")
public class MenuController {
    @Reference
    private MenuService menuService;

    /**
     * 查询展示
     * @param queryPageBean 查询条件对象
     * @return 分页数据
     */
    @PostMapping("findAll")
    public PageResult findAll(@RequestBody QueryPageBean queryPageBean){
        return menuService.findAll(queryPageBean);
    }

    /**
     * 添加菜单项
     * @param menu 对象
     * @return 操作结果
     */
    @PostMapping("add")
    public Result addMenu(@RequestBody Menu menu){
        boolean flag = menuService.addMenu(menu);
        return new Result(flag,flag ? MessageConstant.ADD_MENU_SUCCESS : MessageConstant.ADD_MENU_FAIL);
    }

    /**
     * 删除菜单管理项
     * @param id 菜单管理项序号
     * @return 操作结果
     */
    @GetMapping("delete/{id}")
    public Result deleteMenu(@PathVariable Integer id){
        boolean flag = menuService.deleteMenu(id);
        return new Result(flag,flag ? MessageConstant.DELETE_MENU_SUCCESS : MessageConstant.DELETE_MENU_FAIL);
    }

    /**
     * 更新菜单管理项
     * @param menu 菜单管理项序号
     * @return 操作结果
     */
    @PostMapping("update")
    public Result updateMenu(@RequestBody Menu menu){
        boolean flag = menuService.updateMenu(menu);
        return new Result(flag,flag ? MessageConstant.EDIT_MENU_SUCCESS : MessageConstant.EDIT_MENU_FAIL);
    }

    /**
     * 通过id查询，绑定数据，展示在编辑页面上
     * @param id 菜单管理项序号
     * @return 操作结果及对应数据
     */
    @GetMapping("findById/{id}")
    public Result findByMenuId(@PathVariable Integer id){
        List<Menu> menu = menuService.findByMenuId(id);
        return new Result(menu != null,menu != null ? MessageConstant.QUERY_MENU_SUCCESS : MessageConstant.QUERY_MENU_FAIL,menu);
    }
}
